Width upgrade for a scalable switching network

ABSTRACT

A redundant multistage network can be expanded by width in a non-stop manner, involving an insertion, a reconfiguring and an activation section. The insertion section involves adding a router to each row of routers in a position dictated by the specific upgrade procedure. The reconfiguring section involves the selection of a port and disconnecting any connections necessary to connect that port with its proper corresponding port as derived from the final desired topology. This section can further include the optional permutation of port address to minimize traffic disruption. The activation section involves attaching any new external ports desired to external sources and putting those new connections into service.

BACKGROUND

[0001] 1. Field of Invention

[0002] This invention relates to redundant multistage switchingnetworks, specifically to the non-stop addition of a new router to eachrow of such a network.

[0003] 2. Discussion of Prior Art

[0004] When a multistage switching network such as a Banyan or Butterflynetwork is expanded by width a duplicate copy of itself must be added.In addition, adding a new row requires that half of the externalconnections have to be disconnected in the process. This leads to aninterruption in service.

[0005] A Butterfly network, 10, is shown in FIG. 1 with top ports, 11,connected to external connections, 12, and bottom ports, 13, connectedto external connections, 14. A duplicate of this network, 15, with topports, 16, and bottom ports, 17. A new row, 18, with top ports, 19, andbottom ports, 20, are also shown.

[0006] In order to double number of external connections of theButterfly network, 10, the connections between the top ports, 12, andexternal connections, 14, have to be broken and connected to the lefthalf of new row bottom ports, 20, and the external connections, 14,connected to the left half of new row top ports, 19. To complete theupgrade, the duplicate network top ports, 16, are connected to the righthalf of new row bottom ports 17. At this point, duplicate network bottomports, 17, and right half of new row top ports 19 would be available fornew external connections.

[0007] The problem is that the connections between the original networktop ports, 11, and external connections, 12, have to be disconnected inthe process. This leads to an interruption in service.

[0008] Currently, special “hot slide” multiplexers are designed intoswitching centers to allow a new switching network to be installed inparallel and then switched in between clock cycles. Unfortunately, thisphysical electrical switch-over is only part of the problem. The newswitch has to have exactly the same “control state” information as theold switch. This requires a considerable amount of hardware and softwareto accomplish correctly.

Objects and Advantages

[0009] Accordingly, the several objects and advantages of my inventionare:

[0010] (a) to provide a procedure by which a redundant multistageswitching network can be upgraded by expanding the number of routers perrow without having to break an external connection; and

[0011] (b) to provide a procedure by which a redundant multistageswitching network can be upgraded by expanding the number of routers perrow with a minimum loss in throughput bandwidth.

[0012] Further objects and advantages of our invention will becomeapparent from a consideration of the drawings and ensuing description.

DESCRIPTION OF DRAWINGS

[0013]FIG. 1 shows a 16 port Butterfly multistage switching networkbeing upgraded. (prior art) FIG. 2 shows a 24 port redundant blockingcompensated cyclic group (RBCCG) multistage switching network (priorart)

[0014]FIG. 3A shows a 24 port redundant blocking compensated cyclicgroup multistage switching network expanded to a 30 port switchingnetwork by inserting a new column. The new routers are connectedtogether prior to the insertion.

[0015]FIG. 3B shows a 24 port RBCCG multistage switching networkexpanded to a 30 port switching network by inserting a router afterR(0,3) in row 0, after R(1,3) in row 1, between R(2,2) and R(2,3) in row2, and before R(3,0) in row 3. The new routers are connected togetherprior to the insertion.

[0016]FIG. 3C shows a 24 port RBCCG multistage switching networkexpanded to a 30 port switching network by inserting a router betweenR(0,0) and R(0,1) in row 0, after R(1,3) in row 1, between R(2,2) andR(2,3) in row 2, and between R(3,0) and R(3,1) in row 3. Some of therouters are connected together prior to the insertion.

[0017]FIG. 4 shows a section of a 30-port RBCCG multistage switchingnetwork with the proper interconnection network between two rows ofrouters.

[0018]FIG. 5A, FIG. 5B, FIG. 5C, FIG. 5D, FIG. 5E, FIG. 5F, FIG. 5G,FIG. 5H, FIG. 5I, and FIG. 5J show the connections between router rowsR(1, *) and R(2, *) being rewired into a 30 port RBCCG multistageswitching network interconnection by moving the connection from bottomport 2 of R(1,3) to bottom port 2 of R(1,N); moving the connection frombottom port 0 of R(1,3) to bottom port 2 of R(1,3); moving theconnection from bottom port 1 of R(1,2) to bottom port 0 of R(1,3);moving the connection from bottom port 0 of R(1,2) to bottom port 1 ofR(1,2); moving the connection from bottom port 2 of R(1,1) to bottomport 0 of R(1,2); moving the connection from bottom port 1 of R(1,1) tobottom port 2 of R(1,1); moving the connection from bottom port 0 ofR(1,1) to bottom port 1 of R(1,1); adding a connection between bottomport 0 of R(1,1) and top port 0 of R(2,N); moving the connection frombottom port 1 of R(1,3) to bottom port 0 of R(1,N); moving theconnection from bottom port 2 of R(1,2) to bottom port 1 of R(1,3),respectively.

[0019]FIG. 5K shows a partially upgraded 30 port multistage switchingnetwork with a completed rewire of the interconnections between routerrows R(1,*) and R(2,*) after adding a connection between bottom port 2of R(1,2) and top port 1 of R(2,N).

[0020]FIG. 6A, FIG. 6B, FIG. 6C, FIG. 6D, FIG. 6E, FIG. 6F, FIG. 6G,FIG. 6H, and FIG. 6I show the connections between router rows R(0, *)and R(1, *) being rewired into a 30 port RBCCG multistage switchingnetwork interconnection by moving the connection from bottom port 2 ofR(0,3) to bottom port 1 of R(0,N); moving the connection from top port 1of R(1,0) to top port 0 of R(1,N); moving the connection from top port 1of R(1,1) to top port 1 of R(1,0); moving the connection from top port 1of R(1,2) to top port 1 of R(1,1); moving the connection from top port 1of R(1,3) to top port 1 of R(1,2); moving the connection from top port 2of R(1,0) to top port 1 of R(1,3); moving the connection from top port 2of R(1,1) to top port 1 of R(1,N); adding a connection between bottomport 2 of R(0,3) and top port 2 of R(1,1); moving the connection frombottom port 1 of R(0,3) to bottom port 0 of R(0,N), respectively.

[0021]FIG. 6J shows a partially upgraded 30 port multistage switchingnetwork with a completed rewire of the interconnections between routerrows R(0,*) and R(1,*) after adding a connection between bottom port 1of R(0,3) and top port 2 of R(1,0).

[0022]FIG. 7A, FIG. 7B, FIG. 7C, FIG. 7D, FIG. 7E, FIG. 7F, FIG. 7G,FIG. 7H, FIG. 7I, and FIG. 7J show the connections between router rowsR(2, *) and R(3, *) being rewired into a 30 port RBCCG multistageswitching network interconnection by moving the connection from top port0 of R(3,0) to top port 0 of R(3,N); moving the connection from bottomport 1 of R(2,2) to bottom port 0 of R(2,N); moving the connection fromtop port 1 of R(3,1) to top port 1 of R(3,N); adding a connectionbetween top port 1 of R(3,1) and bottom port 1 of R(2,2); moving theconnection from bottom port 2 of R(2,2) to bottom port 2 of R(2,N);moving the connection from top port 0 of R(3,1) to top port 0 of R(3,0);moving the connection from bottom port 0 of R(2,2) to bottom port 2 ofR(2,2); moving the connection from top port 0 of R(3,2) to top port 0 ofR(3,1); moving the connection from bottom port 1 of R(2,1) to bottomport 0 of R(2,2); moving the connection from top port 0 of R(3,3) to topport 0 of R(3,2), respectively.

[0023]FIG. 7K shows a 30 port RBCCG multistage switching after adding aconnection between top port 0 of R(3,3) and bottom port 1 of R(2,1).

[0024]FIG. 8A, FIG. 8B, FIG. 8C, FIG. 8D, FIG. 8E, FIG. 8F, FIG. 8G,FIG. 8H, FIG. 8I, and FIG. 8J show the connections between router rowsR(1, *) and R(2, *) an being rewired into a 30 port RBCCG multistageswitching network interconnection by an alternate method. First, byswapping bottom ports 1 and 2 of R(0,1); swapping bottom ports 0 and 1of R(0,2); swapping bottom ports 0 and 2 of R(0,2); and finally,swapping bottom ports 0 and 2 of R(0,3), respectively. Second by movingthe connection from bottom port 0 of R(0,3) to bottom port 1 of R(0,N);adding a connection between top port 1 of R(1,N) and bottom port 0 ofR(0,3); moving the connection from bottom port 1 of R(0,3) to bottomport 0 of R(0,N); moving the connection from top port 1 of R(1,1) to topport 0 of R(1,N); moving the connection from bottom port 0 of R(0,2) tobottom port 1 of R(0,3); adding a connection between bottom port 0 ofR(0,2) and top port 1 of R(1,1), respectively.

[0025]FIG. 9A, FIG. 9B and FIG. 9C show the two algorithm for expandingthe width of a compensated cyclic group multistage switching network,FIG. 9A shows the most general algorithm, while FIG. 9B shows a morespecific algorithm.

[0026]FIG. 10 shows three different algorithms for selecting theinsertions positions of new routers into each row. The results aremirrored in FIG. 3A, FIG. 3B and FIG. 3C.

[0027]FIG. 11A and FIG. 11B show two different algorithms for selectingthe order the interconnections should be rewired.

[0028]FIG. 12A, FIG. 12B, and FIG. 12C show three different algorithmsfor selecting which port to rewire during the rewiring phase.

[0029]FIG. 13 shows an algorithm for relabeling ports to improve theefficiency of the upgrade process.

[0030]FIG. 14 shows the flowchart for the width expansion algorithmshown in FIG. 9A and FIG. 9C.

[0031]FIG. 15 shows the flowchart for the width expansion algorithmshown in FIG. 9B and FIG. 9C.

[0032]FIG. 16A and FIG. 16B show the flowcharts for the row selectionalgorithms shown in FIG. 11A and FIG. 11B respectively.

[0033]FIG. 17A, FIG. 17B and FIG. 17C show the flowcharts for the portselection algorithms shown in FIG. 12A, FIG. 12B and FIG. 12C,respectively.

[0034]FIG. 18 shows flowchart for the relabeling algorithm shown in FIG.13.

SUMMARY

[0035] A multistage switching network can expanded in width by addingnew switching elements to the network without breaking any externalconnections.

[0036] If the switching elements are routers or have the ability toroute traffic the expansion may be performed without severelydistrupting its ability to route traffic provided that the network hasadequate path redundancy.

[0037] The width augmentation process has three constituent components.The first component is the selection of the insertion points of the newrouters into each row. The positions can be arbitrary, but it is best toinsert them at the end of each row, since this minimizes the need to usethe path redundancy to route traffic around an upgrade induced fault.

[0038] The second component has two types steps of which one isoptional. The first type is to select a port that is misconnected inreference to the desired topology and to rewire it to its appropriatecounterpart. The second type is optional and is the permutation of portson the same router which results in a correct port being connected tothe correct router. If such a permutation can be performed logically,traffic need not be disrupted. These two types of steps are repeated inany order until the desired topology is achieved. Since the ordering ofsuch steps can be arbitrary, more structure can be added by breakingthis component into three subcomponents.

[0039] The first subcomponent is the selection of the order in whicheach interconnection network is rewired into the desired topology. Theorder can be arbitrary, however, since the path redundancy is greatestin the middle of the network, the best order has been found to startwith the middle row or the closest to the middle. The subsequent rowsshould be ordered with those closest to the middle first and thosefarthest away from the middle last.

[0040] The second subcomponent, which is optional, is the permutation ofports described above. This step should always be taken before rewiringan interconnection network, if such a permutation can be performedlogically so that no traffic disruption occurs. This step minimizesbandwidth reduction during the rewiring of an interconnection network.

[0041] The third subcomponent is the rewiring phase. This isaccomplished by systematically disconnecting from a selected port anymisconnected connection to that port and to the corresponding port towhich the selected port is to be connected. With any misconnectionsdisconnected, the selected port and its appropriate corresponding portmay then be connected. In order to minimize the impact on the throughputbandwidth, priority in the port selection process should be given toselecting ports not currently connected. This introduces a plethora ofport selection algorithms. Additional preferences, contribute to betterthroughput bandwidth during the upgrade process.

[0042] The final component is relatively simple. All externalconnections that are not already connected should be connected andplaced into service.

DESCRIPTION OF INVENTION

[0043] A redundant blocking compensated cyclic group (RBCCG) multistagenetwork, 30, is shown in FIG. 2 and discussed further in U.S. Pat. No.5,841,775, “Scalable Switching Networks” by Alan Huang, Nov. 24, 1998.It consists of rows, 31, 33, 35, and 37 of routers or other switchingelements. These rows of routers are connected together viainterconnection networks 32, 34, and 36. The routers are designed R(row,column) where the top left most router is denoted R(0,0). The top portsof each router are numbered from left to right starting with 0. Thebottom ports of each router are numbered from left to right startingwith 0. The top ports of each interconnection network are numbered fromleft to right starting with 0. The bottom ports of each interconnectionnetwork are numbered from left to right starting with 0.

[0044] The width of the RBCCG can be expanded by inserting a new routerR(0,N) into row 31 of routers in any position; inserting a new routerR(1,N) into row 33 of routers in any position; inserting a new routerR(2,N) into row 35 of routers in any position; inserting a new routerR(3,N) into row 37 of routers in any position. The upgrade can beaccomplished by rewiring interconnection networks 32, 34, and 36,without breaking the connections between the top ports of router row 31and external connections 38 or breaking the connections between thebottom ports of router row 37 and external connections 39. Threeexamples of insertion positions are shown in FIG. 3A, FIG. 3B, and FIG.3C.

[0045] The most general form of the upgrade process is given by FIG. 9A,with supporting functions given in FIG. 9C, and flowcharted in FIG. 14.The first major step is to insert the desired new routers into each row.Though the algorithm depicted goes row by row, the order may bearbitrary. Since the ordering does not impact quality factors in theupgrade process, a row by row order is used.

[0046] The particular position of the new routers in each row can bearbitrary. The “insertion_position” algorithm consists of: Selecting aposition in each row to insert a new router. For each row calledcurrent_row, if a connection be made that matches the interconnectionpattern of the upgraded network between R(current_row,N) andR(current_row+1,N) connect the appropriate bottom port ofR(current_row,N) and the appropriate top port of R(current_row+1,N). Ifno connection can be made, then the bottom ports of R(current_row,N) andthe top ports of R(current_row+1,N) are left alone. A general“insertion_position” algorithm is shown in FIG. 10, along with twospecific “insertion_position” algorithms that are used in the examplesto come.

[0047] The upgrade process continues after the routers are added byselecting any port which is misconnected with respect to the desiredfinal topology. The order of selection does have an impact on thedisruption of traffic and even the number of total steps. A moresystematic and organized approach is given below in a refinement of thisalgorithm. Once a port is selected it is rewired by connecting it to itsappropriate port with respect to the final topology. Henceforth, thisport will be known as its corresponding port. The remainder of thealgorithm in FIG. 9A and flowchart FIG. 14 is a detailed description ofthe rewiring based on the connection states of the port and itscorresponding port.

[0048] There is also an optional branch in the upgrade process. Inscanning the routers, one may discover routers for which someconnections originate from the correct routers (with respect to thedesired final topology) but connect to the wrong port. If a logicalreassignment of port addresses were possible, achieving a virtual portpermutation while leaving the physical connections unchanged. This wouldreduce the number of connections that need to be broken. This step asindicated by the optional branch may be executed at any time, that is itneed not be executed in every loop of the algorithm For instance, thesequence could be rewire, relabel, relabel relabel rewire, rewire,relabel, rewire, etc. A more systematic approach is given in a refinedversion of the upgrade algorithm.

[0049] The final step in this process is to connect and activate any newexternal ports that result from the addition of new ports in thisupgrade process.

[0050] The upgrade process is refined in FIG. 9B with flowchart in FIG.15. The first part with depicting the router insertion and the last stepinvolving the activation of new external ports are the same as the moregeneral algorithm. The distinction is that the rewiring and the optionalrelabeling is made more systematic. The first refinement is that theprocess takes place row by row or more precisely interconnection networkby interconnection network. This is illustrated by the creation of the“row_select” component. Once a row is selected the optional“relabel_ports” component my be executed for that row. After that, aport that is part of the selected interconnection network, by conventionthe interconnection network below the selected row, is selected by the“select_port” component and rewired to its corresponding port. Thesethree component algorithms are given in more detail below.

[0051] In the examples given below, the process of “diverting traffic”away from a port and “stop diverting traffic” from a port (also called“allow traffic to flow” to a port as stated in FIG. 9C.) should occurautomatically whenever a connection is broken (disconnected) and when aconnection is established, respectively if the routers are runningstandard routing protocols such as OSPF. However, the disconnectionprocess may be streamlined by forcing new routing table information tobe the routers prior to the connection being broken, thereby speedingthe upgrade process and minimizing the impact on traffic. Likewise, aforced change to the routing table may expedite the fall use ofbandwidth after a new connection is established. In addition, tostreamline the notation in the flowcharts, FIG. 14 and FIG. 15, the actof disconnection also implies the diversion of traffic from its attachedports prior to the breaking of the connection, Also, the act ofconnecting two ports implies the allowing of new traffic flow throughthe two ports (or equivalently the “stopping of the diversion oftraffic” from the two ports) after the attachment of a connectionbetween the two ports.

[0052] Various examples of the upgrade process are given in greaterdetail FIG. 3A shows insertion of the new routers as a column with thenew routers added to the end of each row. FIG. 3B and FIG. 3C show thewidth of each row extended by inserting new routers in various positionswithin the existing row. FIG. 4 shows the generic interconnectionnetwork of a 30-port RBCCG multistage network. This serves as aninterconnection template where 61 represents at any given time routerrow, current_row, and 63, router row, current_row+1, with 62 as thecorrect interconnection network for a 30-port RBCCG multistage network.In the process of upgrading, interconnection networks 42, 43, and 44 ofFIG. 3A will each have to be rewired to look like 62 of FIG. 4.Similarly, interconnection networks 47, 48, and 49 of FIG. 3B andinterconnection networks 52, 53 and 54 will each have to be rewired tolook like 62 of FIG. 4 for their respective subsequent upgrade steps.

[0053]FIG. 3A shows a connection between bottom port 2 of R(0,N) and topport 2 of R(1,N), a connection between bottom port 2 of R(1,N) and topport 2 of R(2,N) and a connection between bottom port 2 of R(2,N) andtop port 2 of R(3,N), because their respective connections are the sameas those in 62 of FIG. 4.

[0054]FIG. 3B shows a connection between bottom port 2 of R(0,N) and topport 2 of R(1,N), a connection between bottom port 1 of R(1,N) and topport 2 of R(2,N) and a connection between bottom port 1 of R(2,N) andtop port 2 of R(3,N), ), because their respective connections are thesame as those in 62 of FIG. 4.

[0055]FIG. 3C shows no connection between R(0,N) and R(1,N), aconnection between bottom port 1 of R(1,N) and top port 2 of R(2,N) anda connection between bottom port 2 of R(2,N) and top port 2 of R(3,N),because their respective connections are the same as those in 62 of FIG.4. The lack of connection between R(0,N) and R(1,N) is due to the lackof a corresponding connection in 62 of FIG. 4.

[0056] While all insertion patterns will yield a viable width upgrade,the impact on disruption of throughout bandwidth can vary. Of the threeexamples illustrated, FIG. 3C is the least desirable since there is nota connection that can be made between R(0,N) and R(1,N) that would notneed to be rewired later in the rewiring phase. The insertionillustrated in FIG. 3A and FIG. 3B are more desirable because aconnection between R(n,N) and R(n+1,N) can be made prior to the rewiringphase. Of the two, FIG. 3A has the least impact on the throughputbandwidth. However, the subsequent description of this algorithm willfocus on FIG. 3B because it illustrates the more general upgrademethodology more diversely.

[0057] Once the new routers are inserted. The examples follow thealgorithm given in FIG. 9B with examples of the “row_select” and“select_port” components defined and illustrated below.

[0058] The “row_select” algorithm selects a sequencing of theinterconnections between rows. Each interconnection shall be called bythe row number, whose bottom ports the interconnections are attached to.This sequence must include all the interconnections, but may be in anyorder. FIG. 11A shows the best “row_select” algorithm. FIG. 11B showsanother common “row_select” algorithm. FIG. 16A and FIG. 16B show therespective flowcharts.

[0059] There is an optional relabel_ports stage, which will be describedlater. The remaining component of the “upgrade” algorithm is the“select_port” port algorithm. During the rewiring of eachinterconnection network, the basic “upgrade” algorithm calls for theselection of any port, top or bottom not properly connected to it'sappropriate corresponding port in accordance with 62 of FIG. 4. Thoughany port may be selected at each step, it has been found that priorityshould be given to ports that are not already connected. If a port thatis already connected is selected, it may introduce an additionaldisconnection resulting in degradation of throughput bandwidth. FIG.12A, FIG. 12B and FIG. 12C show three common “select_port” algorithms.Corresponding flowcharts are shown in FIG. 17A, FIG. 17B, and FIG. 17C.

[0060] The upgrade using FIG. 3B as an example is shown in much greaterdetail. For the sake of diversity of the algorithm, three different portselection algorithms are used for each row. The “row_select” algorithmshown in FIG. 11A is used.

[0061] In accordance with this “row_select” algorithm, the first row tobe selected as the row in our example is row 1, that is interconnectionnetwork, 48, in FIG. 3B.

[0062] In the rewiring of interconnection network, 48, the “select_port”algorithm shown in FIG. 12A is employed. The process begins by selectingbottom port 2 of R(1,N) because scanning from right to left it is thefirst bottom port not connected to it's corresponding port, top port 2of R(2,3), according to FIG. 4. Top port 2 of R(2,3) is currentlyconnected to bottom port 2 of R(1,3). Divert traffic from top port 2 ofR(2,3) and bottom port 2 of R(1,3). Stop top port 2 of R(2,3) and bottomport 2 of R(1,3). Disconnect top port 2 of R(2,3) and bottom port 2 ofR(1,3) and move the disconnected connection to bottom port 2 of R(1,N)as shown in FIG. 5A. Start bottom port 2 of R(1,N) and top port 2 ofR(2,3). Stop diverting the traffic from bottom port 2 of R(1,N) and topport 2 of R(2,3).

[0063] The process continues by selecting bottom port 2 of R(1,3)because it was disconnected in the previous step shown in FIG. 5A.Bottom port 2 of R(1,3) should be connected to top port 2 of R(2,1)according to FIG. 4. Top port 2 of R(2,1) is currently connected tobottom port 0 of R(1,3). Divert traffic from top port 2 of R(2,1) andbottom port 0 of R(1,3). Stop top port 2 of R(2,1) and bottom port 0 ofR(1,3). Disconnect top port 2 of R(2,1) and bottom port 0 of R(1,3) andmove the disconnected connection to bottom port 2 of R(1,3) as shown inFIG. 5B. Start bottom port 2 of R(1,3) and top port 2 of R(2,1). Stopdiverting the traffic from bottom port 2 of R(1,3) and top port 2 ofR(2,1).

[0064] The process continues by selecting bottom port 0 of R(1,3)because it was disconnected in the previous step shown in FIG. 5B.Bottom port 0 of R(1,3) should be connected to top port 1 of R(2,3)according to FIG. 4. Top port 1 of R(2,3) is currently connected tobottom port 1 of R(1,2). Divert traffic from top port 1 of R(2,3) andbottom port 1 of R(1,2). Stop top port 1 of R(2,3) and bottom port 1 ofR(1,2). Disconnect top port 1 of R(2,3) and bottom port 1 of R(1,2) andmove the disconnected connection to bottom port 0 of R(1,3) as shown inFIG. 5C. Start bottom port 0 of R(1,3) and top port 1 of R(2,3). Stopdiverting the traffic from bottom port 0 of R(1,3) and top port 1 ofR(2,3).

[0065] The process continues by selecting bottom port 1 of R(1,2)because it was disconnected in the previous step shown in FIG. 5C.Bottom port 1 of R(1,2) should be connected to top port 1 of R(2,2)according to FIG. 4. Top port 1 of R(2,2) is currently connected tobottom port 0 of R(1,2). Divert traffic from top port 1 of R(2,2) andbottom port 0 of R(1,2). Stop top port 1 of R(2,2) and bottom port 0 ofR(1,2). Disconnect top port 1 of R(2,2) and bottom port 0 of R(1,2) andmove the disconnected connection to bottom port 1 of R(1,2) as shown inFIG. 5D. Start bottom port 1 of R(1,2) and top port 1 of R(2,2). Stopdiverting the traffic from bottom port 1 of R(1,2) and top port 1 ofR(2,2).

[0066] The process continues by selecting bottom port 0 of R(1,2)because it was disconnected in the previous step shown in FIG. 5D.Bottom port 0 of R(1,2) should be connected to top port 1 of R(2,1)according to FIG. 4. Top port 1 of R(2,1) is currently connected tobottom port 2 of R(1,1). Divert traffic from top port 1 of R(2,1) andbottom port 2 of R(1,1). Stop top port 1 of R(2,1) and bottom port 2 ofR(1,1). Disconnect top port 1 of R(2,1) and bottom port 2 of R(1,1) andmove the disconnected connection to bottom port 0 of R(1,2) as shown inFIG. 5E. Start bottom port 0 of R(1,2) and top port 1 of R(2,1). Stopdiverting the traffic from bottom port 0 of R(1,2) and top port 1 ofR(2,1).

[0067] The process continues by selecting bottom port 2 of R(1,1)because it was disconnected in the previous step shown in FIG. 5E.Bottom port 2 of R(1,1) should be connected to top port 1 of R(2,0)according to FIG. 4. Top port 1 of R(2,0) is currently connected tobottom port 1 of R(1,1). Divert traffic from top port 1 of R(2,0) andbottom port 1 of R(1,1). Stop top port 1 of R(2,0) and bottom port 1 ofR(1,1). Disconnect top port 1 of R(2,0) and bottom port 1 of R(1,1) andmove the disconnected connection to bottom port 2 of R(1,1) as shown inFIG. 5F. Start bottom port 2 of R(1,1) and top port 1 of R(2,0). Stopdiverting the traffic from bottom port 2 of R(1,1) and top port 1 ofR(2,0).

[0068] The process continues by selecting bottom port 1 of R(1,1)because it was disconnected in the previous step shown in FIG. 5F.Bottom port 1 of R(1,1) should be connected to top port 0 of R(2,3)according to FIG. 4. Top port 0 of R(2,3) is currently connected tobottom port 0 of R(1,1). Divert traffic from top port 0 of R(2,3) andbottom port 0 of R(1,1). Stop top port 0 of R(2,3) and bottom port 0 ofR(1,1). Disconnect top port 0 of R(2,3) and bottom port 0 of R(1,1) andmove the disconnected connection to bottom port 1 of R(1,1) as shown inFIG. 5G. Start bottom port 1 of R(1,1) and top port 0 of R(2,3). Stopdiverting the traffic from bottom port 1 of R(1,1) and top port 0 ofR(2,3).

[0069] The process continues by selecting bottom port 0 of R(1,1)because it was disconnected in the previous step shown in FIG. 5G.Bottom port 0 of R(1,1) should be connected to top port 0 of R(2,N)according to FIG. 4. Top port 0 of R(2,N) is currently not connected.Establish a new connection between bottom port 0 of R(1,1) and top port0 of R(2,N) as shown in FIG. 5H. Start bottom port 0 of R(1,1) and topport 0 of R(2,N). Stop diverting the traffic from bottom port 0 ofR(1,1) and top port 0 of R(2,N).

[0070] The process continues by selecting bottom port 0 of R(1,N)because scanning from right to left it is the first bottom port notconnected to it's corresponding port, top port 2 of R(2,2), according toFIG. 4. Top port 2 of R(2,2) is currently connected to bottom port 1 ofR(1,3). Divert traffic from top port 2 of R(2,2) and bottom port 1 ofR(1,3). Stop top port 2 of R(2,2) and bottom port 1 of R(1,3).Disconnect top port 2 of R(2,2) and bottom port 1 of R(1,3) and move thedisconnected connection to bottom port 0 of R(1,N) as shown in FIG. 5I.Start bottom port 0 of R(1,N) and top port 2 of R(2,2). Stop divertingthe traffic from bottom port 0 of R(1,N) and top port 2 of R(2,2).

[0071] The process continues by selecting bottom port 1 of R(1,3)because it was disconnected in the previous step shown in FIG. 5I.Bottom port 1 of R(1,3) should be connected to top port 2 of R(2,0)according to FIG. 4. Top port 2 of R(2,0) is currently connected tobottom port 2 of R(1,2). Divert traffic from top port 2 of R(2,0) andbottom port 2 of R(1,2). Stop top port 2 of R(2,0) and bottom port 2 ofR(1,2). Disconnect top port 2 of R(2,0) and bottom port 2 of R(1,2) andmove the disconnected connection to bottom port 1 of R(1,3) as shown inFIG. 5J. Start bottom port 1 of R(1,3) and top port 2 of R(2,0). Stopdiverting the traffic from bottom port 1 of R(1,3) and top port 2 ofR(2,0).

[0072] The process continues by selecting bottom port 2 of R(1,2)because it was disconnected in the previous step shown in FIG. 5J.Bottom port 2 of R(1,2) should be connected to top port 1 of R(2,N)according to FIG. 4. Top port 1 of R(2,N) is currently not connected.Establish a new connection between bottom port 2 of R(1,2) and top port1 of R(2,N) as shown in FIG. 5K. Start bottom port 2 of R(1,2) and topport 1 of R(2,N). Stop diverting the traffic from bottom port 2 ofR(1,2) and top port 1 of R(2,N). This completes the rewiring of theinterconnection network, 48, between row 1 and row 2.

[0073] In accordance with the “row_select” algorithm of FIG. 11A, thesecond row to be selected as the row in our example is row 0, that isinterconnection network, 47 in FIG. 3B.

[0074] In the rewiring of interconnection network, 47, the “select_port”algorithm shown in FIG. 12B is employed. This algorithm is substantiallymore complex than that in used previously in FIG. 12A, so at each step,the selection process is described in much detail first before therewiring is described in detail.

[0075] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, bottom port 1 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,3). Top port 2of R(1,3) is currently connected to bottom port 2 of R(0,3). Thebreaking of this connection does not leave router R(0,3) or routerR(1,3) with more than one broken connection. This completes theselection process for this step.

[0076] With bottom port 1 of R(0,N) selected and recalling that itscorresponding port, top port 2 of R(1,3), is connected to bottom port 2of R(0,3), the process continues by diverting traffic from top port 2 ofR(1,3) and bottom port 2 of R(0,3); stopping top port 2 of R(1,3) andbottom port 2 of R(0,3); disconnecting top port 2 of R(1,3) and bottomport 2 of R(0,3) and moving the disconnected connection to bottom port 1of R(0,N) as shown in FIG. 6A; starting bottom port 1 of R(0,N) and topport 2 of R(1,3); and stop diverting the traffic from bottom port 1 ofR(0,N) and top port 2 of R(1,3).

[0077] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, top port 0 of R(1,N) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 1 of R(0,1).Bottom port 1 of R(0,1) is currently connected to top port 1 of R(1,0).The breaking of this connection does not leave router R(0,1) or routerR(1,0) with more than one broken connection. This completes theselection process for this step.

[0078] With top port 0 of R(1,N) selected and recalling that itscorresponding port, bottom port 1 of R(0,1), is connected to top port 1of R(1,0), the process continues by diverting traffic from bottom port 1of R(0,1) and top port 1 of R(1,0); stopping bottom port 1 of R(0,1) andtop port 1 of R(1,0); disconnecting bottom port 1 of R(0,1) and top port1 of R(1,0) and moving the disconnected connection to top port 0 ofR(1,N) as shown in FIG. 6B; starting top port 0 of R(1,N) and bottomport 1 of R(0,1); and stop diverting the traffic from top port 0 ofR(1,N) and bottom port 1 of R(0,1).

[0079] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, bottom port 2 of R(0,3) is not connected to anythingwith corresponding port according to FIG. 4, top port 2 of R(1,1). Topport 2 of R(1,1) is currently connected to bottom port 0 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 2 of R(0,3) is not selected. Continuing to scanfrom right to left, top port 1 of R(1,0) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 2 of R(0,1).Bottom port 2 of R(0,1) is currently connected to top port 1 of R(1,1).The breaking of this connection does not leave router R(0,1) or routerR(1,1) with more than one broken connection. This completes theselection process for this step.

[0080] With top port 1 of R(1,0) selected and recalling that itscorresponding port, bottom port 2 of R(0,1), is connected to top port 1of R(1,1), the process continues by diverting traffic from bottom port 2of R(0,1) and top port 1 of R(1,1); stopping bottom port 2 of R(0,1) andtop port 1 of R(1,1); disconnecting bottom port 2 of R(0,1) and top port1 of R(1,1) and moving the disconnected connection to top port 1 ofR(1,0) as shown in FIG. 6C; starting top port 1 of R(1,0) and bottomport 2 of R(0,1); and stop diverting the traffic from top port 1 ofR(1,0) and bottom port 2 of R(0,1).

[0081] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, bottom port 2 of R(0,3) is not connected to anythingwith corresponding port according to FIG. 4, top port 2 of R(1,1). Topport 2 of R(1,1) is currently connected to bottom port 0 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 2 of R(0,3) is not selected. Continuing to scanfrom right to left, top port 1 of R(1,1) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 0 of R(0,2).Bottom port 0 of R(0,2) is currently connected to top port 1 of R(1,2).The breaking of this connection does not leave router R(0,2) or routerR(1,2) with more than one broken connection. This completes theselection process for this step.

[0082] With top port 1 of R(1,1) selected and recalling that itscorresponding port, bottom port 0 of R(0,2), is connected to top port 1of R(1,2), the process continues by diverting traffic from bottom port 0of R(0,2) and top port 1 of R(1,2); stopping bottom port 0 of R(0,2) andtop port 1 of R(1,2); disconnecting bottom port 0 of R(0,2) and top port1 of R(1,2) and moving the disconnected connection to top port 1 ofR(1,1) as shown in FIG. 6D; starting top port 1 of R(1,1) and bottomport 0 of R(0,2); and stop diverting the traffic from top port 1 ofR(1,1) and bottom port 0 of R(0,2).

[0083] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, bottom port 2 of R(0,3) is not connected to anythingwith corresponding port according to FIG. 4, top port 2 of R(1,1). Topport 2 of R(1,1) is currently connected to bottom port 0 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 2 of R(0,3) is not selected. Continuing to scanfrom right to left, top port 1 of R(1,2) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 1 of R(0,2).Bottom port 1 of R(0,2) is currently connected to top port 1 of R(1,3).The breaking of this connection does not leave router R(0,2) or routerR(1,3) with more than one broken connection. This completes theselection process for this step.

[0084] With top port 1 of R(1,2) selected and recalling that itscorresponding port, bottom port 1 of R(0,2), is connected to top port 1of R(1,3), the process continues by diverting traffic from bottom port 1of R(0,2) and top port 1 of R(1,3); stopping bottom port 1 of R(0,2) andtop port 1 of R(1,3); disconnecting bottom port 1 of R(0,2) and top port1 of R(1,3) and moving the disconnected connection to top port 1 ofR(1,2) as shown in FIG. 6E; starting top port 1 of R(1,2) and bottomport 1 of R(0,2); and stop diverting the traffic from top port 1 ofR(1,2) and bottom port 1 of R(0,2).

[0085] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, bottom port 2 of R(0,3) is not connected to anythingwith corresponding port according to FIG. 4, top port 2 of R(1,1). Topport 2 of R(1,1) is currently connected to bottom port 0 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 2 of R(0,3) is not selected. Continuing to scanfrom right to left, top port 1 of R(1,3) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 2 of R(0,2).Bottom port 2 of R(0,2) is currently connected to top port 2 of R(1,0).The breaking of this connection does not leave router R(0,2) or routerR(1,0) with more than one broken connection. This completes theselection process for this step.

[0086] With top port 1 of R(1,3) selected and recalling that itscorresponding port, bottom port 2 of R(0,2), is connected to top port 2of R(1,0), the process continues by diverting traffic from bottom port 2of R(0,2) and top port 2 of R(1,0); stopping bottom port 2 of R(0,2) andtop port 2 of R(1,0); disconnecting bottom port 2 of R(0,2) and top port2 of R(1,0) and moving the disconnected connection to top port 1 ofR(1,3) as shown in FIG. 6F; starting top port 1 of R(1,3) and bottomport 2 of R(0,2); and stop diverting the traffic from top port 1 ofR(1,3) and bottom port 2 of R(0,2).

[0087] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 1 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 0 of R(0,3). Bottomport 0 of R(0,3) is currently connected to top port 2 of R(1,1). Thebreaking this connection introduces a second broken connection toR(0,3), so top port 1 of R(1,N) is not selected. Continuing to scan fromright to left, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 0 of R(0,N) is not selected. Continuing to scanfrom right to left, bottom port 2 of R(0,3) is not connected to anythingwith corresponding port according to FIG. 4, top port 2 of R(1,1). Topport 2 of R(1,1) is currently connected to bottom port 0 of R(0,3). Thebreaking this connection introduces a second broken connection toR(0,3), so bottom port 2 of R(0,3) is not selected. Continuing to scanfrom right to left, top port 2 of R(1,0) is not connected to anythingwith corresponding port according to FIG. 4, bottom port 1 of R(0,3).Bottom port 1 of R(0,3) is currently connected to top port 2 of R(1,2).The breaking this connection introduces a second broken connection toR(0,3), so top port 2 of R(1,0) is not selected. Since none of the portsthat are not connected satisfy the second port selection criterion, theselection process continues by selecting the rightmost port notconnected to anything, that is top port 1 of R(1,N).

[0088] With top port 1 of R(1,N) selected and recalling that itscorresponding port, bottom port 0 of R(0,3), is connected to top port 2of R(1,1), the process continues by diverting traffic from bottom port 0of R(0,3) and top port 2 of R(1,1); stopping bottom port 0 of R(0,3) andtop port 2 of R(1,1); disconnecting bottom port 0 of R(0,3) and top port2 of R(1,1) and moving the disconnected connection to top port 1 ofR(1,N) as shown in FIG. 6G; starting top port 1 of R(1,N) and bottomport 0 of R(0,3); and stop diverting the traffic from top port 1 ofR(1,N) and bottom port 0 of R(0,3).

[0089] The process continues by selecting bottom port 2 of R(0,3)because scanning from right to left, it is the first port bottom or topnot connected to anything and whose corresponding port (according toFIG. 4) is also not connected to anything; establishing a new connectionbetween bottom port 2 of R(0,3) and top port 2 of R(1,1) as shown inFIG. 6H; starting bottom port 2 of R(0,3) and top port 2 of R(1,1); andstop diverting the traffic from bottom port 2 of R(0,3) and top port 2of R(1,1).

[0090] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking of this connection does not leave router R(0,3) or routerR(1,2) with more than one broken connection. This completes theselection process for this step.

[0091] With bottom port 0 of R(0,N) selected and recalling that itscorresponding port, top port 2 of R(1,2), is connected to bottom port 1of R(0,3), the process continues by diverting traffic from top port 2 ofR(1,2) and bottom port 1 of R(0,3); stopping top port 2 of R(1,2) andbottom port 1 of R(0,3); disconnecting top port 2 of R(1,2) and bottomport 1 of R(0,3) and moving the disconnected connection to bottom port 0of R(0,N) as shown in FIG. 6I; starting bottom port 0 of R(0,N) and topport 2 of R(1,2); and stop diverting the traffic from bottom port 0 ofR(0,N) and top port 2 of R(1,2).

[0092] The process continues by selecting bottom port 1 of R(0,3)because scanning from right to left, it is the first port bottom or topnot connected to anything and whose corresponding port (according toFIG. 4) is also not connected to anything; establishing a new connectionbetween bottom port 1 of R(0,3) and top port 2 of R(1,0) as shown inFIG. 6J; starting bottom port 1 of R(0,3) and top port 2 of R(1,0); andstop diverting the traffic from bottom port 1 of R(0,3) and top port 2of R(1,0). This completes the rewiring of interconnection network, 47,between row 0 and row 1.

[0093] In accordance with the “row_select” algorithm of FIG. 11A, thethird row to be selected as the row in our example is row 2, that isinterconnection network, 49, in FIG. 3B.

[0094] In the rewiring of interconnection network, 49, the “select_port”algorithm shown in FIG. 12C is employed. This algorithm is intended toshow a more arbitrary method of selecting ports that still yields goodresults. In addition when loading up the “port fifo” we alternatescanning left to right for top ports then bottom ports that aren't.

[0095] The process begins by loading the port fifo with {top port 0 ofR(3,N), bottom port 0 of R(2,N), top port 1 of R(3,N), bottom port 2 ofR(2,N)}.

[0096] The process continues by selecting top port 0 of R(3,N) becauseno port top or bottom has a corresponding port that is not connectedand, it is the first port in the port fifo. Top port 0 of R(3,N) shouldbe connected to bottom port 0 of R(2,0) according to FIG. 4. Bottom port0 of R(2,0) is currently connected to top port 0 of R(3,0). Diverttraffic from bottom port 0 of R(2,0) and top port 0 of R(3,0). Stopbottom port 0 of R(2,0) and top port 0 of R(3,0). Disconnect bottom port0 of R(2,0) and top port 0 of R(3,0) and move the disconnectedconnection to top port 0 of R(3,N) as shown in FIG. 7A. Start top port 0of R(3,N) and bottom port 0 of R(2,0). Stop diverting the traffic fromtop port 0 of R(3,N) and bottom port 0 of R(2,0).

[0097] The port fifo now contains {bottom port 0 of R(2,N), top port 1of R(3,N), bottom port 2 of R(2,N)}. The process continues by selectingbottom port 0 of R(2,N) because no port top or bottom has acorresponding port that is not connected and, it is the first port inthe port fifo. Bottom port 0 of R(2,N) should be connected to top port 1of R(3,3) according to FIG. 4. Top port 1 of R(3,3) is currentlyconnected to bottom port 1 of R(2,2). Divert traffic from top port 1 ofR(3,3) and bottom port 1 of R(2,2). Stop top port 1 of R(3,3) and bottomport 1 of R(2,2). Disconnect top port 1 of R(3,3) and bottom port 1 ofR(2,2) and move the disconnected connection to bottom port 0 of R(2,N)as shown in FIG. 7B. Start bottom port 0 of R(2,N) and top port 1 ofR(3,3). Stop diverting the traffic from bottom port 0 of R(2,N) and topport 1 of R(3,3).

[0098] The port fifo now contains {top port 1 of R(3,N), bottom port 2of R(2,N)}. The process continues by selecting top port 1 of R(3,N)because no port top or bottom has a corresponding port that is notconnected and, it is the first port in the port fifo. Top port 1 ofR(3,N) should be connected to bottom port 2 of R(2,1) according to FIG.4. Bottom port 2 of R(2,1) is currently connected to top port 1 ofR(3,1). Divert traffic from bottom port 2 of R(2,1) and top port 1 ofR(3,1). Stop bottom port 2 of R(2,1) and top port 1 of R(3,1).Disconnect bottom port 2 of R(2,1) and top port 1 of R(3,1) and move thedisconnected connection to top port 1 of R(3,N) as shown in FIG. 7C.Start top port 1 of R(3,N) and bottom port 2 of R(2,1). Stop divertingthe traffic from top port 1 of R(3,N) and bottom port 2 of R(2,1).

[0099] The process continues by selecting top port 1 of R(3,1) becausescanning from right to left, it is the first port bottom or top notconnected to anything and whose corresponding port (according to FIG. 4)is also not connected to anything. Establish a new connection betweentop port 1 of R(3,1) and bottom port 1 of R(2,2) as shown in FIG. 7D.Start top port 1 of R(3,1) and bottom port 1 of R(2,2). Stop divertingthe traffic from top port 1 of R(3,1) and bottom port 1 of R(2,2).

[0100] The port fifo now contains {bottom port 2 of R(2,N)}. The processcontinues by selecting bottom port 2 of R(2,N) because no port top orbottom has a corresponding port that is not connected and, it is thefirst port in the port fifo. Bottom port 2 of R(2,N) should be connectedto top port 2 of R(3,0) according to FIG. 4. Top port 2 of R(3,0) iscurrently connected to bottom port 2 of R(2,2). Divert traffic from topport 2 of R(3,0) and bottom port 2 of R(2,2). Stop top port 2 of R(3,0)and bottom port 2 of R(2,2). Disconnect top port 2 of R(3,0) and bottomport 2 of R(2,2) and move the disconnected connection to bottom port 2of R(2,N) as shown in FIG. 7E. Start bottom port 2 of R(2,N) and topport 2 of R(3,0). Stop diverting the traffic from bottom port 2 ofR(2,N) and top port 2 of R(3,0).

[0101] The port fifo is now empty. The process continues by loading theport fifo with {top port 0 of R(3,0), bottom port 2 of R(2,2)}.

[0102] The process continues by selecting top port 0 of R(3,0) becauseno port top or bottom has a corresponding port that is not connectedand, it is the first port in the port fifo. Top port 0 of R(3,0) shouldbe connected to bottom port 1 of R(2,0) according to FIG. 4. Bottom port1 of R(2,0) is currently connected to top port 0 of R(3,1). Diverttraffic from bottom port 1 of R(2,0) and top port 0 of R(3,1). Stopbottom port 1 of R(2,0) and top port 0 of R(3,1). Disconnect bottom port1 of R(2,0) and top port 0 of R(3,1) and move the disconnectedconnection to top port 0 of R(3,0) as shown in FIG. 7F. Start top port 0of R(3,0) and bottom port 1 of R(2,0). Stop diverting the traffic fromtop port 0 of R(3,0) and bottom port 1 of R(2,0).

[0103] The port fifo now contains {bottom port 2 of R(2,2)}. The processcontinues by selecting bottom port 2 of R(2,2) because no port top orbottom has a corresponding port that is not connected and, it is thefirst port in the port fifo. Bottom port 2 of R(2,2) should be connectedto top port 1 of R(3,2) according to FIG. 4. Top port 1 of R(3,2) iscurrently connected to bottom port 0 of R(2,2). Divert traffic from topport 1 of R(3,2) and bottom port 0 of R(2,2). Stop top port 1 of R(3,2)and bottom port 0 of R(2,2). Disconnect top port 1 of R(3,2) and bottomport 0 of R(2,2) and move the disconnected connection to bottom port 2of R(2,2) as shown in FIG. 7G. Start bottom port 2 of R(2,2) and topport 1 of R(3,2). Stop diverting the traffic from bottom port 2 ofR(2,2) and top port 1 of R(3,2).

[0104] The port fifo is now empty. The process continues by loading theport fifo with {top port 0 of R(3,1), bottom port 0 of R(2,2)}.

[0105] The process continues by selecting top port 0 of R(3,1) becauseno port top or bottom has a corresponding port that is not connectedand, it is the first port in the port fifo. Top port 0 of R(3,1) shouldbe connected to bottom port 2 of R(2,0) according to FIG. 4. Bottom port2 of R(2,0) is currently connected to top port 0 of R(3,2). Diverttraffic from bottom port 2 of R(2,0) and top port 0 of R(3,2). Stopbottom port 2 of R(2,0) and top port 0 of R(3,2). Disconnect bottom port2 of R(2,0) and top port 0 of R(3,2) and move the disconnectedconnection to top port 0 of R(3,1) as shown in FIG. 7H. Start top port 0of R(3,1) and bottom port 2 of R(2,0). Stop diverting the traffic fromtop port 0 of R(3,1) and bottom port 2 of R(2,0).

[0106] The port fifo now contains {bottom port 0 of R(2,2)}. The processcontinues by selecting bottom port 0 of R(2,2) because no port top orbottom has a corresponding port that is not connected and, it is thefirst port in the port fifo. Bottom port 0 of R(2,2) should be connectedto top port 1 of R(3,0) according to FIG. 4. Top port 1 of R(3,0) iscurrently connected to bottom port 1 of R(2,1). Divert traffic from topport 1 of R(3,0) and bottom port 1 of R(2,1). Stop top port 1 of R(3,0)and bottom port 1 of R(2,1). Disconnect top port 1 of R(3,0) and bottomport 1 of R(2,1) and move the disconnected connection to bottom port 0of R(2,2) as shown in FIG. 7I. Start bottom port 0 of R(2,2) and topport 1 of R(3,0). Stop diverting the traffic from bottom port 0 ofR(2,2) and top port 1 of R(3,0).

[0107] The port fifo is now empty. The process continues by loading theport fifo with {top port 0 of R(3,2), bottom port 1 of R(2,1)}.

[0108] The process continues by selecting top port 0 of R(3,2) becauseno port top or bottom has a corresponding port that is not connectedand, it is the first port in the port fifo. Top port 0 of R(3,2) shouldbe connected to bottom port 0 of R(2,1) according to FIG. 4. Bottom port0 of R(2,1) is currently connected to top port 0 of R(3,3). Diverttraffic from bottom port 0 of R(2,1) and top port 0 of R(3,3). Stopbottom port 0 of R(2,1) and top port 0 of R(3,3). Disconnect bottom port0 of R(2,1) and top port 0 of R(3,3) and move the disconnectedconnection to top port 0 of R(3,2) as shown in FIG. 7J. Start top port 0of R(3,2) and bottom port 0 of R(2,1). Stop diverting the traffic fromtop port 0 of R(3,2) and bottom port 0 of R(2,1).

[0109] The port fifo now contains {bottom port 1 of R(2,1)}. The processcontinues by selecting bottom port 1 of R(2,1) because no port top orbottom has a corresponding port that is not connected and, it is thefirst port in the port fifo. Coincidentally, it is also the remainingport left in the port fifo. Bottom port 1 of R(2, 1) should be connectedto top port 0 of R(3,3) according to FIG. 4. Top port 0 of R(3,3) iscurrently connected to bottom port 1 of R(2,1). Divert traffic from topport 0 of R(3,3) and bottom port 1 of R(2,1). Stop top port 0 of R(3,3)and bottom port 1 of R(2,1). Disconnect top port 0 of R(3,3) and bottomport 1 of R(2,1) and move the disconnected connection to bottom port 1of R(2,1) as shown in FIG. 7K. Start bottom port 1 of R(2,1) and topport 0 of R(3,3). Stop diverting the traffic from bottom port 1 ofR(2,1) and top port 0 of R(3,3).

[0110] This completes the rewiring phase of the width upgrade of thenetwork shown in FIG. 2 in accordance with the insertion positions shownin FIG. 3B all that remains to complete the upgrade is to connect toexternal sources (if desired) and activate external connections denotedby 45 and 46.

[0111] In a more sophisticated system, connections to ports on the samerouters may be exchanged logically rather than physically. An example ofsuch a swap is illustrated when interconnection network, 47, of FIG. 3Bis transformed into the interconnection network shown in FIG. 8A bysapping bottom port 2 and bottom port 3 of router R(1,0). This may beaccomplished logically by permanently diverting the traffic intended forbottom port 2 of router R(1,0) to bottom port 3 of router R(1,0) and thetraffic intended for bottom port 3 of router R(1,0) to bottom port 2 ofrouter R(1,0). Even if such a logical exchange is not possible the portsmay be in such physical proximity to each other that a physical swap canbe made while minimizing the time which the disconnections occurresulting in very little impact on throughput bandwidth. In addition,only port exchanges are used here, but natural extensions to generalport permutations may also be employed.

[0112] Rather than show a complete upgrade employing the relabel, forthe entire network. The upgrade and rewiring of interconnection network47 of FIG. 3B (which is the same as interconnection networks 42, 43, 44of FIG. 3A.) is shown in great detail here. The detail algorithm isgiven in FIG. 13 and flowcharted FIG. 18.

[0113] The process begins by scanning bottom ports from left to right,R(0,1) is connected to R(1,1), but according to FIG. 4, bottom port 2should be connected to R(1,1) instead of bottom port 1. The connectionto those ports are swapped as shown in FIG. 8A.

[0114] The process continues by scanning bottom ports from left toright, R(0,2) is connected to R(1,3), but according to FIG. 4, bottomport 1 should be connected to R(1,3) instead of bottom port 0. Theconnection to those ports are swapped as shown in FIG. 8B.

[0115] The process continues by scanning bottom ports from left toright, R(0,2) is connected to R(1,0), but according to FIG. 4, bottomport 2 should be connected to R(1,0) instead of bottom port 0. Theconnection to those ports are swapped as shown in FIG. 8C.

[0116] The process continues by scanning bottom ports from left toright, R(0,3) is connected to R(1,3), but according to FIG. 4, bottomport 2 should be connected to R(1,3) instead of bottom port 0. Theconnection to those ports are swapped as shown in FIG. 8D.

[0117] After finishing scanning the bottom ports from left to right, topports are scanned from right to left. All top ports that are connectedto the correct router are connected from the correct top port to thecorrect bottom port. Hence, the relabeling process is finished. Theprocess continues by employing the same “select_port” algorithm as inFIG. 12B as before.

[0118] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, bottom port 1 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,3). Top port 2of R(1,3) is currently connected to bottom port 0 of R(0,3). Thebreaking of this connection does not leave router R(0,3) or routerR(1,3) with more than one broken connection. This completes theselection process for this step.

[0119] With bottom port 1 of R(0,N) selected and recalling that itscorresponding port, top port 2 of R(1,3), is connected to bottom port 0of R(0,3), the process continues by diverting traffic from top port 2 ofR(1,3) and bottom port 0 of R(0,3); stopping top port 2 of R(1,3) andbottom port 0 of R(0,3); disconnecting top port 2 of R(1,3) and bottomport 0 of R(0,3) and moving the disconnected connection to bottom port 1of R(0,N) as shown in FIG. 8E; starting bottom port 1 of R(0,N) and topport 2 of R(1,3); and stop diverting the traffic from bottom port 1 ofR(0,N) and top port 2 of R(1,3).

[0120] The process continues by selecting top port 1 of R(1,N) becausescanning from right to left, it is the first port bottom or top notconnected to anything and whose corresponding port (according to FIG. 4)is also not connected to anything; establishing a new connection betweentop port 1 of R(1,N) and bottom port 0 of R(0,3) as shown in FIG. 8F;starting top port 1 of R(1,N) and bottom port 0 of R(0,3); and stopdiverting the traffic from top port 1 of R(1,N) and bottom port 0 ofR(0,3).

[0121] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, bottom port 0 of R(0,N) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,2). Top port 2of R(1,2) is currently connected to bottom port 1 of R(0,3). Thebreaking of this connection does not leave router R(0,3) or routerR(1,2) with more than one broken connection. This completes theselection process for this step.

[0122] With bottom port 0 of R(0,N) selected and recalling that itscorresponding port, top port 2 of R(1,2), is connected to bottom port 1of R(0,3), the process continues by diverting traffic from top port 2 ofR(1,2) and bottom port 1 of R(0,3); stopping top port 2 of R(1,2) andbottom port 1 of R(0,3); disconnecting top port 2 of R(1,2) and bottomport 1 of R(0,3) and moving the disconnected connection to bottom port 0of R(0,N) as shown in FIG. 8G; starting bottom port 0 of R(0,N) and topport 2 of R(1,2); and stop diverting the traffic from bottom port 0 ofR(0,N) and top port 2 of R(1,2).

[0123] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, top port 0 of R(1,N) is not connected to anything withcorresponding port according to FIG. 4, bottom port 1 of R(0,1). Bottomport 1 of R(0,1) is currently connected to top port 1 of R(1,1). Thebreaking of this connection does not leave router R(0,1) or routerR(1,1) with more than one broken connection. This completes theselection process for this step.

[0124] With top port 0 of R(1,N) selected and recalling that itscorresponding port, bottom port 1 of R(0,1), is connected to top port 1of R(1,1), the process continues by diverting traffic from bottom port 1of R(0,1) and top port 1 of R(1,1); stopping bottom port 1 of R(0,1) andtop port 1 of R(1,1); disconnecting bottom port 1 of R(0,1) and top port1 of R(1,1) and moving the disconnected connection to top port 0 ofR(1,N) as shown in FIG. 8H; starting top port 0 of R(1,N) and bottomport 1 of R(0,1); and stop diverting the traffic from top port 0 ofR(1,N) and bottom port 1 of R(0,1).

[0125] Scanning from right to left, no port, top or bottom, has acorresponding port which is not connected. Again, scanning from right toleft, bottom port 1 of R(0,3) is not connected to anything withcorresponding port according to FIG. 4, top port 2 of R(1,0). Top port 2of R(1,0) is currently connected to bottom port 0 of R(0,2). Thebreaking of this connection does not leave router R(0,2) or routerR(1,0) with more than one broken connection. This completes theselection process for this step.

[0126] With bottom port 1 of R(0,3) selected and recalling that itscorresponding port, top port 2 of R(1,0), is connected to bottom port 0of R(0,2), the process continues by diverting traffic from top port 2 ofR(1,0) and bottom port 0 of R(0,2); stopping top port 2 of R(1,0) andbottom port 0 of R(0,2); disconnecting top port 2 of R(1,0) and bottomport 0 of R(0,2) and moving the disconnected connection to bottom port 1of R(0,3) as shown in FIG. 8I; starting bottom port 1 of R(0,3) and topport 2 of R(1,0); and stop diverting the traffic from bottom port 1 ofR(0,3) and top port 2 of R(1,0).

[0127] The process continues by selecting bottom port 0 of R(0,2)because scanning from right to left, it is the first port bottom or topnot connected to anything and whose corresponding port (according toFIG. 4) is also not connected to anything; establishing a new connectionbetween bottom port 0 of R(0,2) and top port 1 of R(1,1) as shown inFIG. 8J; starting bottom port 0 of R(0,2) and top port 1 of R(1,1); andstop diverting the traffic from bottom port 0 of R(0,2) and top port 1of R(1,1).

[0128] This completes the relabel and rewire phase applied tointerconnection network, 47, of FIG. 3B. In a complete upgrade, thisalgorithm could first be applied to interconnection network, 48, of FIG.3B, then interconnection network, 47, of FIG. 3B, and finallyinterconnection network, 49, of FIG. 3B in accordance with the first“row_select” algorithm of FIG. 11. Again to complete the upgradeexternal connections, 45 and 46 should be connected to external sourcesand activated.

[0129] Though the example focused in this application is illustrated inFIG. 3B, it has been found that the best upgrade algorithm found employsthe first “insertion_position” algorithm of FIG. 10 and shown in FIG.3A; uses the row order dictated by the first “row_select” algorithm ofFIG. 11; and on each interconnection network selected by the above roworder, optionally uses the “relabel” algorithm given in FIG. 13, and the“select_port” algorithm of FIG. 12B.

[0130] In the two other examples depicted in FIG. 3A and FIG. 3C, afterthe rewire (and relabel) phase using the components of choice. Theupgrade is completed by connecting and activating external connections,40 and 41, for the example in FIG. 3A or 50 and 51, for the example inFIG. 3C.

[0131] The process depicted in application may be used also to reducethe width of the network. Simply reverse the process shown here. Insummary, the process would involve disconnecting external connections torouters to be removed; rewiring each interconnection network in the samemanner as those described above; and finally removing the unwiredrouters.

[0132] Though this invention is applied to a RBCCG network composed ofrows of routers of consistent number per row and fanout per router. Itmay be applied to fault tolerant networks composed of rows of routers ofvarying number per row and fanout per router where the rows areconnected with interconnection networks of the same type as that used ina RBCCG network It also applies to any redundant multistage network forwhich a width augmentation is defined. In addition, it is not restrictedto routers and may be applied to networks composed of other types ofswitching elements.

[0133] Although the present invention has been described above in termsof specific embodiments, it is anticipated that alteration andmodifications thereof will no doubt become apparent to those skilled inthe art. It is therefore intended that the following claims beinterpreted as covering all such alterations and modifications asfalling within the true spirit and scope of the invention.

We claim: 1) A method of increasing the router fanout in a redundantmulti-stage network which minimizes the impact on throughput bandwidth,where the multi-stage network has a plurality of rows, where the rowshave a plurality of routers, where each router has a plurality of ports,where the number of new routers is equal to the number of rows, andwhere external port is any top port on a new router in the first row orany bottom port on a new router in the last row comprising the step of:a) selecting a previously unselected row in which to insert a newrouter; b) selecting the position within the selected row to insert thenew router; c) inserting the new router in the selected position withinthe selected row; d) repeating steps a), b), and c) for all the rowswhich have not been previously selected; e) rewiring any port of anyrouter in any row which is not connected to the proper port of theproper router; f) repeating step e) for all the ports which are notconnected to the proper port of the proper router and have not beenpreviously selected; g) connecting all external ports of new routers inthe first row and the last row; and h) activating all external ports ofnew routers in the first row and the last row. 2) The method as claimedin claim 1, wherein the step e) is replaced by a new step e) e) eitherrewiring any port of any router in any row which is not connected to theproper port of the proper router or permuting the labeling of the routerports of any router to reduce the number of connections which have to berewired; whereby reducing the number of connections that have to berewired and thus reducing the reducing the effect on the throughputbandwidth. 3) A method of increasing the width of a redundantmulti-stage network which minimizes the impact on throughput bandwidth,where the multi-stage network has a plurality of rows, where the rowshave a plurality of routers, where each router has a plurality of ports,where the number of new routers is equal to the number of rows, andwhere external port is any top port on a new router in the first row orany bottom port on a new router in the last row comprising the steps of:a) selecting a previously unselected row in which to insert a newrouter; b) selecting the position within the selected row to insert thenew router; c) inserting the new router in the selected position withinthe selected row; d) rewiring the connections to and from the selectedrow which are not connected to the proper port of the proper router inthe selected row; e) repeating the previous steps for all the rows whichhave not been previously selected; f) connecting all external ports ofnew routers in the first row and the last row; and g) activating allexternal ports of new routers in the first row and the last row. 4) Themethod as claimed in claim 3, wherein the step h) permuting the labelingof the router ports to reduce the number of connections which have to berewired; is inserted between steps c) and d), whereby reducing thenumber of connections that have to be rewired and thus reducing thereducing the effect on the throughput bandwidth. 5) The selection of apreviously unselected row as claimed in step a) of claim 3, wherein therow is the middle row or closest to the middle; whereby the selected rowhas the greatest topological redundancy, thus reducing the effect of anyrewiring on the throughput bandwidth. 6) The method of claim 3, whereinall the new routers are first connected to form a column with the samenumber of rows as the multi-stage network; the new router in step b) isa column router with a row which corresponds to the selected row in stepa); and the position selected in step b) is at the same end of the rowas the previously selected new routers; whereby the first connectedcolumn routers reduce the number of connection that have to be rewiredand thus reduce the impact on the throughput bandwidth. 7) The rewiringof the connections to and from the selected row which are not connectedto the proper port of the proper node in the selected row as claimed instep d) of claim 3, wherein ports not currently connected are givenpriority; whereby reducing the number of disconnected connections at anygiven time and thus reducing the impact on throughput bandwidth. 8) Amethod of increasing the width of a redundant multi-stage network whichminimizes the impact on throughput bandwidth as shown in FIG. 14, wherethe multi-stage network has a plurality of rows, where the rows have aplurality of routers, where the routers have a plurality of ports, wherecurrent_row is a variable which indicates a row of the multi-stagenetwork, where N is a variable which indicates a column of themulti-stage network, where number_of_rows is a constant equal to thenumber of rows in the multi-stage network, where R(row, column) is avariable which indicates a router in a multi-stage network, and whereinsertion_position(x) is a function which indicates the position in arow a new router should be inserted where external port is any top porton a new router in the first row or any bottom port on a new router inthe last row comprising the steps of: a) begin, b) set current_row to 0,c) insert router R(current_row, N) into positioninsertion_position(current_row), d) if current_row>1 then go to step eelse go to step g, e) if bottom port of router R(current_row−1, N) isconnected to any top port of router R(current_row, N) then go to step felse got to step g, f) connect bottom port of router R(current_row−1, N)to top port router R(current_row, N), g) increment current_row, h) ifcurrent_row<number_of rows) then go to step c else go to step i, i) ifthere are any misconnected ports then go to step l else go to step j, j)connect and activate all disconnected external ports, k) end l) if thereare any ports that are not connected to their appropriate ports then goto step m else go to step j, m) select port not connected to itsappropriate port and call it corresponding_port, n) if current_port isalready connected then go to step o else go to step p, o) disconnectcurrent_port from existing connection, p) if corresponding_port isalready connected then go to step q else go to step r, q) disconnectcorresponding_port from existing connection, r) connect current_port tocorresponding_port and go to step i. 9) The method as claimed in stepsa) through r) of claim 8, wherein steps t) if there are any routerswhose ports can be relabeled then go to step u else go to step l, u)relabel the appropriate ports in that router and go to step i, are addedand step i is replaced by a new step i, i) if there are any misconnectedports then go to step t else go to step j, whereby the router ports areexamined to see if a connection can be avoided by re-labeling the ports.10) A method of increasing the width of a redundant multi-stage networkwhich minimizes the impact on throughput bandwidth as shown in FIG. 15,where the multi-stage network has a plurality of rows, where the rowshave a plurality of routers, where the routers have a plurality ofports, where current_row is a variable which indicates a row of themulti-stage network, where N is a variable which indicates a column ofthe multi-stage network, where number_of_rows is a constant equal to thenumber of rows in the multi-stage network, where R(row, column) is avariable which indicates a router in a multi-stage network, whereinsertion_position(x) is a function which selects the position in a rowa new router should be inserted, where rindex is a variable whichindicates a row of the multi-stage network, where row_select(x) is afunction which selects a row in the multi-stage network, wherecurrent_port is a variable which indicates a router port, whereport_select(x) is a function which selects a router port, and wherecorresponding_port is a variable which indicates a router port, andwhere external port is any top port on a new router in the first row orany bottom port on a new router in the last row comprising the steps of:a) begin b) set current_row to 0, c) insert router R(current_row, N)into position insertion_position(current_row), d) if current_row>1 thengo to step e else go to step g, e) if bottom port of routerR(current_row−1, N) is connected to top port of router R(current_row, N)then go to step f else go to step g, f) connect bottom port of routerR(current_row−1, N) to top port router R(current_row, N), g) incrementcurrent_row, h) if current_row<number_of_rows) then go to step c else goto step i, i) set rindex to 0, j) set current_row to row_select(rindex),k) set current_port to port picked by port_select(x), l) setcorresponding_port to the port that current_port should be connected to,m) if there are more ports to select then go to step n else go to stept, n) if current_port already connected then go to step o else go tostep p, o) disconnect current_port from existing connection, p) ifcurrent_port is already connected then go to step q else go to step r,q) disconnect corresponding_port from existing connection, r) connectcurrent_port to corresponding_port, s) increment rindex, and t) ifrindex<number_of_rows then got to step j else go to step u, u) connectand activate all disconnected external ports, and v) end. 11) The methodas claimed in steps a) through v) of claim 10, wherein step w)relabel_ports of current_row is inserted between step j and step k,whereby the router ports are relabeled to avoid the need to make aconnection. 12) The port relabeling method as claimed in step w of claim11 as shown in FIG. 18, where bport is a bottom port of a router, wheretport is a top port of a router, where dest_router is a router, andwhere dest_port is a port, wherein the port relabeling method comprisesthe steps: a) begin b) set bport to left most bottom router of the rowc) set source router to be the one bport belongs to d) set dest_routerto be the one bport is connected to e) if bport is supposed to beconnected to dest_router then go to step f else go to step h, f) if anyport on source router is supposed to be connected to dest_router then goto step g else go to step h, g) exchange bport with that port, h) ifthere is a bottom port to the right of bport then go to step i else goto step j, i) set bport to that bottom port right of bport and go tostep d, j) set tport to right most bottom router of the row, k) setsource router to be the one tport belongs to, l) set dest_port to be theone tport is connected to, m) if tport is supposed to be connecteddest_port then go to step n else go to step p, n) if any port on sourcerouter is supposed to be connected to tport then go to step o else go tostep p, o) exchange tport with that port and go to step p, p) if thereis a top port to the right of tport then go to step q else go to step r,q) set tport to that top port left of tport, and go to step l, and r)end. 13) The row selection method as claimed in step j of claim 10 asshown in FIG. 16B, where num_row is the number of rows in the redundantmulti-stage network, and where row_index is the number of a row in theredundant multi-stage network, wherein the port selection methodcomprises the steps: a) begin b) if there are an even number of rowsthen go to step c else go to step f, c) if the current row index is eventhen go to step d else go to step e, d) set return value tonum_rows/2+row_index/2−1 and go to step i, e) set return value tonum_rows/2−(row_index+1)/2 and go to step i, f) if the current row_indexis even then go to step g else go to step h, g) set return value to(num_rows−1)/2+row_index /2−1 and go to step i, h) set return value to(num_rows-row_index)/2−1 and go to step i, and i) end 14) The portselection method as claimed in step k of claim 10 as shown in FIG. 17B,wherein the port selection method comprises the steps: a) begin, b)establish scanning order of disconnect ports, c) set test port to firstport in scanning order, d) find corresponding port to test port, e) ifthe corresponding port is connected then go to step f else go to step o,f) if there is a port next in the scanning order then go to step d elsego to step g, g) set test port to first port in scanning order, h) findthe connection to the corresponding port to test port, i) if eitherrouter connected to this connection already have a disconnected portthen go to step j else go to step p, j) if there is a port next in thescanning order then go step k else go to step l. k) Set test port tonext port in scanning order and go to step h, l) if there is adisconnected port then go to step q else go to step m, m) if there is aport not connected to its proper port then go to r else go to step n, n)report no ports need rewiring and go to step s, o) set return value totest port and go to step s, p) set return value to test port and go tostep s, q) set return value to this port and go to step s, r) set returnvalue to this port and go to step s, s) end 15) The port selectionmethod as claimed in step k of claim 10 as shown in FIG. 17A, wheretest_port is a variable which indicates a port value, wherein the portselection method comprises the steps: a) begin, b) if a bottom port wasdisconnected in the previous step then go to step h else go to step c,c) establish scanning order of bottom ports, d) set test_port to firstport in scanning order, e) if the test_port is connected to its properport then go to step f else go to step i, f) if there is a port next inthe scanning order then go to step g else go to step j, g) set test_portto next port in scanning order and go to step e, h) set return value tothe disconnected port and go to step k, i) set return value to test_portand go to step k, j) report no ports need rewiring and go to step k, andk) end. 16) The port selection method as claimed in step k of claim 10as shown in FIG. 17C, wherein the port selection method comprises thesteps: a) begin, b) get “port fifo” from previous selection call, c) ifthe fifo is empty then f else go to step d, d) set return value to topof fifo, e) remove top of fifo go to step k, f) load “port fifo” withall disconnected ports, g) if the fifo is empty then go to step h elsego to step d, h) if there is a port not connected to its proper portthen go to step i else go to step j, i) set return value to this portand go to step k, j) report no ports need rewiring and go to step k, andk) end.